package config

// 这个结构体决定了返回的数据，默认值决定了ini文件数据
type Config struct {
	Server   ServerConfig
	Entprise EntpriseConfig
	// 有度应用配置
	YouduAppOrg YouduAppOrgConfig
	// IMA系统配置
	ImaApi ImaApiConfig
	// 有度子服务配置
	ServiceImaSync     ServiceImaSyncConfig
	ServiceImaSyncPull ServiceImaSyncPullConfig
	ServiceYouSSO      ServiceYouSSOConfig
	// App      AppConfig
	// Database DatabaseConfig
}

// ConfigResponse 包含配置值和注释
type ConfigResponse struct {
	Inst     Config                       `json:"config"`
	Comments map[string]map[string]string `json:"comments"`
}

type ServerConfig struct {
	Port string `ini:"Port"`
}
type EntpriseConfig struct {
	YouduServer string `ini:"YouduServer"`
	Buin        int    `ini:"Buin"`
	ClientUrl   string `ini:"ClientUrl"`
}

/*********************有度应用配置*************************/

// 有度组织架构配置
type YouduAppOrgConfig struct {
	AppId  string `ini:"AppId"`
	AesKey string `ini:"AesKey"`
}

/*********************子服务配置*************************/

type ServiceImaSyncConfig struct {
	Port string `ini:"Port"`
}

type ServiceImaSyncPullConfig struct {
	Interval int `ini:"Interval"`
}

// 子服务配置

type ServiceYouSSOConfig struct {
	Port            string `ini:"Port"`
	CertFile        string `ini:"CertFile"`
	KeyFile         string `ini:"KeyFile"`
	Countdown       string `ini:"Countdown"`
	Secret          string `ini:"Secret"`
	YouduDBServer   string `ini:"YouduDBServer"`
	YouduDBPort     string `ini:"YouduDBPort"`
	YouduDBUser     string `ini:"YouduDBUser"`
	YouduDBPassword string `ini:"YouduDBPassword"`
}

//	type YouduAppSysOrgConfig struct {
//		AppId  string `ini:"AppId"`
//		AesKey string `ini:"AesKey"`
//	}

// IMA系统配置
type ImaApiConfig struct {
	Server       string `ini:"Server"`
	AuthUser     string `ini:"AuthUser"`
	AuthPassword string `ini:"AuthPassword"`
	AuthKey      string `ini:"AuthKey"`
}

// 共用数据库配置
type DatabaseConfig struct {
	Host     string `ini:"Host"`
	Port     string `ini:"Port"`
	User     string `ini:"User"`
	Password string `ini:"Password"`
	DbName   string `ini:"DbName"`
}
